package ar.com.solidussource.framework.backend.dao.filter;

import java.util.List;

/**
 * Resultado de la ejecucion de algun metodo de consulta, este resultado
 * contiene la lista de objetos retornados y ademas contiene la pagina retornada<br>
 * El result siempre es retornado por un dao en base a consultas genericas, y
 * puede ser el resultado de una consulta con un Filter
 */
public class Result<T> {

	private List<T> result;
	private long totalResults;
	private Page page;

	/**
	 * Retorna la cantidad total de paginas de resultado de la consulta
	 * efectuada en base al tamanho de pagina utilizado en el pago
	 * 
	 * @return cantidad total de paginas
	 */
	public long getTotalPages() {
		long ret;
		if(totalResults % page.getPageSize() == 0){
			ret = totalResults / page.getPageSize();
		} else {
			ret = (totalResults / page.getPageSize()) + 1;
		}
		return ret;
	}

	/**
	 * @return the result
	 */
	public List<T> getResult() {
		return result;
	}

	/**
	 * @param result
	 *            the result to set
	 */
	public void setResult(List<T> result) {
		this.result = result;
	}

	/**
	 * @return the totalResults
	 */
	public long getTotalResults() {
		return totalResults;
	}

	/**
	 * @param totalResults
	 *            the totalResults to set
	 */
	public void setTotalResults(long totalResults) {
		this.totalResults = totalResults;
	}

	/**
	 * @return the page
	 */
	public Page getPage() {
		return page;
	}

	/**
	 * @param page
	 *            the page to set
	 */
	public void setPage(Page page) {
		this.page = page;
	}

}